package com.chinairi.mall.dao;

import com.chinairi.mall.controller.viewobject.UCIVO;
import com.chinairi.mall.controller.viewobject.UserCompanyInfoVO;
import com.chinairi.mall.controller.viewobject.UserRoleRelationVo;
import com.chinairi.mall.enums.RoleIdType;
import com.chinairi.mall.model.UserCompanyInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.chinairi.mall.service.modelobject.AdminInfoMapMO;
import com.chinairi.mall.service.modelobject.CompanyTypeMO;
import com.chinairi.mall.service.modelobject.ShopInfoToCompRedisMO;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 用户企业信息表 Mapper 接口
 * </p>
 *
 * @author Webgasd
 * @since 2020-09-16
 */
public interface UserCompanyInfoMapper extends BaseMapper<UserCompanyInfo> {

    /**
     * 更新审核值
     *
     * @param userCompanyInfoVO
     */
    void updateApprove(@Param("UserCompanyInfoVO") UserCompanyInfoVO userCompanyInfoVO);

    /**
     * 根据用户id从获取企业信息,包括企业资质搜索
     * @param userId 用户id
     * @return CompanyTypeMO
     */
    CompanyTypeMO getByUserId(@Param("userId") String userId);

    /**
     * 根据搜索条件获取审核列表
     * @param companyTypeMo
     * @return
     */
    List<CompanyTypeMO> getComList(@Param("search") CompanyTypeMO companyTypeMo);

    /**
     * 更新企业审核状态
     * @param companyTypeMo
     */
    void changeStatus(@Param("search") CompanyTypeMO companyTypeMo);

    /**
     * 限时删除企业资质
     * @param companyTypeMo
     */
    void deleteStatus(@Param("search") CompanyTypeMO companyTypeMo);

    /**
     * 定时任务
     * @param date
     */
    void updateStatus(@Param("date") String date);

    /**
     * 获取所有企业的id和名称列表
     * @return
     */
    List<UserCompanyInfo> getIdAndName();

    /**
     * 物资公司下所有店铺信息
     * @return
     */
    AdminInfoMapMO getAdminInfo();

    /**
     * 根据店铺id获取店铺所属企业的所有信息。
     * @return
     */
    List<ShopInfoToCompRedisMO> getShopInfoToComp();

    /**
     * 获取店铺和企业信息
     * @param csDbId
     * @return
     */
    ShopInfoToCompRedisMO getShopInfoAndCompInfo(@Param("csDbId") String csDbId);

    /**
     * 通過參數Id獲取參數值
     * @param key
     * @return
     */
    String getParamValueByParamKey(@Param("key") String key);

    /**
     * 獲取企業下的首個用戶id
     * @param uciDbid
     * @return
     */
    String getByUserIdByCompanyId(@Param("uciDbid") String uciDbid);

    /**
     * 設置供應商、服務商的角色權限。
     * @param userRoleRelationVo
     */
    void addRoleRelation(@Param("userRoleRelationVo") UserRoleRelationVo userRoleRelationVo);

    /**
     * 获取企业归属下拉
     * @return
     */
    List<Map<String, Object>> getBelongToList();
}
